package com.cheng.example.book.advise151.chap8.client121;

/**
 *
 * 建议121：线程优先级只使用三个等级
 *
 *
 * 。Java的线程有10个级别(准确的说是11个级别，
 * 级别为0的线程是JVM的，应用程序不能设置该级别)，
 * 那是不是说级别是10的线程肯定比级别是9的线程先运行呢?我们来看如下一个多线程类：
 *
 *
 * 测试结果：
 * (1)、并不是严格按照线程优先级来执行的
 * (2)、优先级差别越大，运行机会差别越明显
 *
 *
 */
class TestThread implements Runnable {
    public void start(int _priority) {
        Thread t = new Thread(this);
        // 设置优先级别
        t.setPriority(_priority);
        t.start();
    }
    @Override
    public void run() {
        // 消耗CPU的计算
        for (int i = 0; i < 100000; i++) {
            Math.hypot(924526789, Math.cos(i));
        }
        // 输出线程优先级
        System.out.println("Priority：" + Thread.currentThread().getPriority());
    }

    public static void main(String[] args) {
        //启动20个不同优先级的线程
        for (int i = 0; i < 20; i++) {
//            System.out.println(Thread.MIN_PRIORITY);
            new TestThread().start(i % 10 + 1);
        }
    }

}